first principle method